"""
## 课后作业

- 背诵作用域的概念

- 练习作用域之间的转换

- 默写一个装饰器, 用来输出函数的执行时间.

- 使用装饰器来为斐波那契函数添加缓存

  ```
  def cache_deco(func):
  	# 保存n执行后的结果
  	a = {}
  	# 判断当前cache a中是否有结果, 有的话就直接返回, 没有就执行以下
  	result = func(n)
  	return result

  @cache_deco
  def fibo(n):
  	pass
  ```

"""
import time


# def cache_deco(func):
#     def wrapper(*args, **kwargs):
#         start_time = time.time()
#         result = func(*args, **kwargs)
#         end_time = time.time()
#         print(f"{func.__name__} execute time: {format(end_time - start_time, '.2f')} s")
#         return result
#     return wrapper


def cache_deco(func):
    # 保存n执行后的结果
    a = {}
    # 判断当前cache a中是否有结果, 有的话就直接返回, 没有就执行以下
    result = func(n)
    return result


@cache_deco
def func(n):
    if n<=1:
        return 1
    return func(n-1)+func(n-2)